|
@@ -1,5 +1,5 @@
|
|
/*
|
|
/*
|
|
- * Copyright 2008-2010 Freescale Semiconductor, Inc.
|
|
|
|
|
|
+ * Copyright 2008-2011 Freescale Semiconductor, Inc.
|
|
*
|
|
*
|
|
* See file CREDITS for list of people who contributed to this
|
|
* See file CREDITS for list of people who contributed to this
|
|
* project.
|
|
* project.
|
|
@@ -30,18 +30,13 @@
|
|
#include <asm/fsl_portals.h>
|
|
#include <asm/fsl_portals.h>
|
|
#include <asm/fsl_liodn.h>
|
|
#include <asm/fsl_liodn.h>
|
|
|
|
|
|
-static ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_CORENET_QMAN_ADDR;
|
|
|
|
|
|
+static ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_QMAN_ADDR;
|
|
|
|
|
|
void setup_portals(void)
|
|
void setup_portals(void)
|
|
{
|
|
{
|
|
|
|
+#ifdef CONFIG_FSL_CORENET
|
|
int i;
|
|
int i;
|
|
|
|
|
|
- /* Set the Qman initiator BAR to match the LAW (for DQRR stashing) */
|
|
|
|
-#ifdef CONFIG_PHYS_64BIT
|
|
|
|
- out_be32(&qman->qcsp_bare, (u32)(CONFIG_SYS_QMAN_MEM_PHYS >> 32));
|
|
|
|
-#endif
|
|
|
|
- out_be32(&qman->qcsp_bar, (u32)CONFIG_SYS_QMAN_MEM_PHYS);
|
|
|
|
-
|
|
|
|
for (i = 0; i < CONFIG_SYS_QMAN_NUM_PORTALS; i++) {
|
|
for (i = 0; i < CONFIG_SYS_QMAN_NUM_PORTALS; i++) {
|
|
u8 sdest = qp_info[i].sdest;
|
|
u8 sdest = qp_info[i].sdest;
|
|
u16 fliodn = qp_info[i].fliodn;
|
|
u16 fliodn = qp_info[i].fliodn;
|
|
@@ -53,6 +48,13 @@ void setup_portals(void)
|
|
/* set frame liodn */
|
|
/* set frame liodn */
|
|
out_be32(&qman->qcsp[i].qcsp_io_cfg, (sdest << 16) | fliodn);
|
|
out_be32(&qman->qcsp[i].qcsp_io_cfg, (sdest << 16) | fliodn);
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ /* Set the Qman initiator BAR to match the LAW (for DQRR stashing) */
|
|
|
|
+#ifdef CONFIG_PHYS_64BIT
|
|
|
|
+ out_be32(&qman->qcsp_bare, (u32)(CONFIG_SYS_QMAN_MEM_PHYS >> 32));
|
|
|
|
+#endif
|
|
|
|
+ out_be32(&qman->qcsp_bar, (u32)CONFIG_SYS_QMAN_MEM_PHYS);
|
|
}
|
|
}
|
|
|
|
|
|
/* Update portal containter to match LAW setup of portal in phy map */
|
|
/* Update portal containter to match LAW setup of portal in phy map */
|
|
@@ -118,9 +120,12 @@ void fdt_portal(void *blob, const char *compat, const char *container,
|
|
static int fdt_qportal(void *blob, int off, int id, char *name,
|
|
static int fdt_qportal(void *blob, int off, int id, char *name,
|
|
enum fsl_dpaa_dev dev, int create)
|
|
enum fsl_dpaa_dev dev, int create)
|
|
{
|
|
{
|
|
- int childoff, dev_off, num, ret = 0;
|
|
|
|
|
|
+ int childoff, dev_off, ret = 0;
|
|
uint32_t dev_handle;
|
|
uint32_t dev_handle;
|
|
|
|
+#ifdef CONFIG_FSL_CORENET
|
|
|
|
+ int num;
|
|
u32 liodns[2];
|
|
u32 liodns[2];
|
|
|
|
+#endif
|
|
|
|
|
|
childoff = fdt_subnode_offset(blob, off, name);
|
|
childoff = fdt_subnode_offset(blob, off, name);
|
|
if (create) {
|
|
if (create) {
|
|
@@ -154,9 +159,11 @@ static int fdt_qportal(void *blob, int off, int id, char *name,
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
|
|
+#ifdef CONFIG_FSL_CORENET
|
|
num = get_dpaa_liodn(dev, &liodns[0], id);
|
|
num = get_dpaa_liodn(dev, &liodns[0], id);
|
|
ret = fdt_setprop(blob, childoff, "fsl,liodn",
|
|
ret = fdt_setprop(blob, childoff, "fsl,liodn",
|
|
&liodns[0], sizeof(u32) * num);
|
|
&liodns[0], sizeof(u32) * num);
|
|
|
|
+#endif
|
|
} else {
|
|
} else {
|
|
return childoff;
|
|
return childoff;
|
|
}
|
|
}
|
|
@@ -184,7 +191,9 @@ void fdt_fixup_qportals(void *blob)
|
|
|
|
|
|
off = fdt_node_offset_by_compatible(blob, -1, "fsl,qman-portal");
|
|
off = fdt_node_offset_by_compatible(blob, -1, "fsl,qman-portal");
|
|
while (off != -FDT_ERR_NOTFOUND) {
|
|
while (off != -FDT_ERR_NOTFOUND) {
|
|
|
|
+#ifdef CONFIG_FSL_CORENET
|
|
u32 liodns[2];
|
|
u32 liodns[2];
|
|
|
|
+#endif
|
|
const int *ci = fdt_getprop(blob, off, "cell-index", NULL);
|
|
const int *ci = fdt_getprop(blob, off, "cell-index", NULL);
|
|
int j, i = *ci;
|
|
int j, i = *ci;
|
|
|
|
|
|
@@ -192,6 +201,7 @@ void fdt_fixup_qportals(void *blob)
|
|
if (err < 0)
|
|
if (err < 0)
|
|
goto err;
|
|
goto err;
|
|
|
|
|
|
|
|
+#ifdef CONFIG_FSL_CORENET
|
|
liodns[0] = qp_info[i].dliodn;
|
|
liodns[0] = qp_info[i].dliodn;
|
|
liodns[1] = qp_info[i].fliodn;
|
|
liodns[1] = qp_info[i].fliodn;
|
|
|
|
|
|
@@ -199,6 +209,7 @@ void fdt_fixup_qportals(void *blob)
|
|
&liodns, sizeof(u32) * 2);
|
|
&liodns, sizeof(u32) * 2);
|
|
if (err < 0)
|
|
if (err < 0)
|
|
goto err;
|
|
goto err;
|
|
|
|
+#endif
|
|
|
|
|
|
i++;
|
|
i++;
|
|
|
|
|
|
@@ -207,6 +218,7 @@ void fdt_fixup_qportals(void *blob)
|
|
if (err < 0)
|
|
if (err < 0)
|
|
goto err;
|
|
goto err;
|
|
|
|
|
|
|
|
+#ifdef CONFIG_FSL_CORENET
|
|
#ifdef CONFIG_SYS_DPAA_PME
|
|
#ifdef CONFIG_SYS_DPAA_PME
|
|
err = fdt_qportal(blob, off, i, "pme@0", FSL_HW_PORTAL_PME, 1);
|
|
err = fdt_qportal(blob, off, i, "pme@0", FSL_HW_PORTAL_PME, 1);
|
|
if (err < 0)
|
|
if (err < 0)
|
|
@@ -214,6 +226,8 @@ void fdt_fixup_qportals(void *blob)
|
|
#else
|
|
#else
|
|
fdt_qportal(blob, off, i, "pme@0", FSL_HW_PORTAL_PME, 0);
|
|
fdt_qportal(blob, off, i, "pme@0", FSL_HW_PORTAL_PME, 0);
|
|
#endif
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
+
|
|
#ifdef CONFIG_SYS_DPAA_FMAN
|
|
#ifdef CONFIG_SYS_DPAA_FMAN
|
|
for (j = 0; j < CONFIG_SYS_NUM_FMAN; j++) {
|
|
for (j = 0; j < CONFIG_SYS_NUM_FMAN; j++) {
|
|
char name[] = "fman@0";
|
|
char name[] = "fman@0";
|