* [U-Boot-Users] [PATCH 17/17] mpc83xx: Fix errors when CONFIG_OF_LIBFDT is enabled
@ 2007-07-05 1:34 Jerry Van Baren
0 siblings, 0 replies; only message in thread
From: Jerry Van Baren @ 2007-07-05 1:34 UTC (permalink / raw)
To: u-boot
Several node strings were not correct (trailing slashes and properties
in the strings)
Added setting of the timebase-frequency (if OF_TBCLK is defined).
Improved error messages and use debug() instead of printf().
Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
---
cpu/mpc83xx/cpu.c | 82 +++++++++++++++++++++++++++++++++-------------------
1 files changed, 52 insertions(+), 30 deletions(-)
(Sorry for the retransmission, I didn't get the proper subject on it
the first time around.)
Hi Kim,
This is the second of two cross-over changes to the 83xx tree. It has
the fixes for the TSEC errors you pointed out with the "old" set of
patches.
Please review and ACK/NAK.
Thanks,
gvb
diff --git a/cpu/mpc83xx/cpu.c b/cpu/mpc83xx/cpu.c
index a52f98a..455b7a7 100644
--- a/cpu/mpc83xx/cpu.c
+++ b/cpu/mpc83xx/cpu.c
@@ -337,7 +337,7 @@ static int fdt_set_eth0(void *fdt, int nodeoffset, const char *name, bd_t *bd)
if (fdt_get_property(fdt, nodeoffset, name, 0)) {
return fdt_setprop(fdt, nodeoffset, name, bd->bi_enetaddr, 6);
}
- return -FDT_ERR_NOTFOUND;
+ return 0;
}
#ifdef CONFIG_HAS_ETH1
/* second onboard ethernet port */
@@ -349,7 +349,7 @@ static int fdt_set_eth1(void *fdt, int nodeoffset, const char *name, bd_t *bd)
if (fdt_get_property(fdt, nodeoffset, name, 0)) {
return fdt_setprop(fdt, nodeoffset, name, bd->bi_enet1addr, 6);
}
- return -FDT_ERR_NOTFOUND;
+ return 0;
}
#endif
#ifdef CONFIG_HAS_ETH2
@@ -362,7 +362,7 @@ static int fdt_set_eth2(void *fdt, int nodeoffset, const char *name, bd_t *bd)
if (fdt_get_property(fdt, nodeoffset, name, 0)) {
return fdt_setprop(fdt, nodeoffset, name, bd->bi_enet2addr, 6);
}
- return -FDT_ERR_NOTFOUND;
+ return 0;
}
#endif
#ifdef CONFIG_HAS_ETH3
@@ -375,7 +375,7 @@ static int fdt_set_eth3(void *fdt, int nodeoffset, const char *name, bd_t *bd)
if (fdt_get_property(fdt, nodeoffset, name, 0)) {
return fdt_setprop(fdt, nodeoffset, name, bd->bi_enet3addr, 6);
}
- return -FDT_ERR_NOTFOUND;
+ return 0;
}
#endif
@@ -389,94 +389,111 @@ static int fdt_set_busfreq(void *fdt, int nodeoffset, const char *name, bd_t *bd
return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp));
}
+#ifdef OF_TBCLK
+static int fdt_set_tbfreq(void *fdt, int nodeoffset, const char *name, bd_t *bd)
+{
+ u32 tmp;
+ /*
+ * Create or update the property.
+ */
+ tmp = cpu_to_be32(OF_TBCLK);
+ return fdt_setprop(fdt, nodeoffset, name, &tmp, sizeof(tmp));
+}
+#endif
+
+
/*
- * Fixups to the fdt. If "create" is TRUE, the node is created
- * unconditionally. If "create" is FALSE, the node is updated
- * only if it already exists.
+ * Fixups to the fdt.
*/
static const struct {
char *node;
char *prop;
int (*set_fn)(void *fdt, int nodeoffset, const char *name, bd_t *bd);
} fixup_props[] = {
+#ifdef OF_TBCLK
{ "/cpus/" OF_CPU,
- "bus-frequency",
- fdt_set_busfreq
+ "timebase-frequency",
+ fdt_set_tbfreq
},
- { "/cpus/" OF_SOC,
+#endif
+ { "/cpus/" OF_CPU,
"bus-frequency",
fdt_set_busfreq
},
- { "/" OF_SOC "/serial at 4500/",
+ { "/cpus/" OF_CPU,
"clock-frequency",
fdt_set_busfreq
},
- { "/" OF_SOC "/serial at 4600/",
+ { "/" OF_SOC "/serial at 4500",
"clock-frequency",
fdt_set_busfreq
},
-#ifdef CONFIG_TSEC1
- { "/" OF_SOC "/ethernet at 24000,
+ { "/" OF_SOC "/serial at 4600",
+ "clock-frequency",
+ fdt_set_busfreq
+ },
+#ifdef CONFIG_MPC83XX_TSEC1
+ { "/" OF_SOC "/ethernet at 24000",
"mac-address",
fdt_set_eth0
},
- { "/" OF_SOC "/ethernet at 24000,
+ { "/" OF_SOC "/ethernet at 24000",
"local-mac-address",
fdt_set_eth0
},
#endif
-#ifdef CONFIG_TSEC2
- { "/" OF_SOC "/ethernet at 25000,
+#ifdef CONFIG_MPC83XX_TSEC2
+ { "/" OF_SOC "/ethernet at 25000",
"mac-address",
fdt_set_eth1
},
- { "/" OF_SOC "/ethernet at 25000,
+ { "/" OF_SOC "/ethernet at 25000",
"local-mac-address",
fdt_set_eth1
},
#endif
#ifdef CONFIG_UEC_ETH1
#if CFG_UEC1_UCC_NUM == 0 /* UCC1 */
- { "/" OF_QE "/ucc at 2000/mac-address",
+ { "/" OF_QE "/ucc at 2000",
"mac-address",
fdt_set_eth0
},
- { "/" OF_QE "/ucc at 2000/mac-address",
+ { "/" OF_QE "/ucc at 2000",
"local-mac-address",
fdt_set_eth0
},
#elif CFG_UEC1_UCC_NUM == 2 /* UCC3 */
- { "/" OF_QE "/ucc at 2200/mac-address",
+ { "/" OF_QE "/ucc at 2200",
"mac-address",
fdt_set_eth0
},
- { "/" OF_QE "/ucc at 2200/mac-address",
+ { "/" OF_QE "/ucc at 2200",
"local-mac-address",
fdt_set_eth0
},
#endif
-#endif
+#endif /* CONFIG_UEC_ETH1 */
#ifdef CONFIG_UEC_ETH2
#if CFG_UEC2_UCC_NUM == 1 /* UCC2 */
- { "/" OF_QE "/ucc at 3000/mac-address",
+ { "/" OF_QE "/ucc at 3000",
"mac-address",
fdt_set_eth1
},
- { "/" OF_QE "/ucc at 3000/mac-address",
+ { "/" OF_QE "/ucc at 3000",
"local-mac-address",
fdt_set_eth1
},
#elif CFG_UEC1_UCC_NUM == 3 /* UCC4 */
- { "/" OF_QE "/ucc at 3200/mac-address",
+ { "/" OF_QE "/ucc at 3200",
"mac-address",
fdt_set_eth1
},
- { "/" OF_QE "/ucc at 3200/mac-address",
+ { "/" OF_QE "/ucc at 3200",
"local-mac-address",
fdt_set_eth1
},
#endif
-#endif
+#endif /* CONFIG_UEC_ETH2 */
};
void
@@ -489,12 +506,17 @@ ft_cpu_setup(void *blob, bd_t *bd)
for (j = 0; j < (sizeof(fixup_props) / sizeof(fixup_props[0])); j++) {
nodeoffset = fdt_find_node_by_path(fdt, fixup_props[j].node);
if (nodeoffset >= 0) {
- err = (*fixup_props[j].set_fn)(blob, nodeoffset, fixup_props[j].prop, bd);
+ err = fixup_props[j].set_fn(
+ blob, nodeoffset, fixup_props[j].prop, bd);
if (err < 0)
- printf("set_fn/libfdt: %s %s returned %s\n",
+ debug("Problem setting %s = %s: %s\n",
fixup_props[j].node,
fixup_props[j].prop,
fdt_strerror(err));
+ } else {
+ debug("Couldn't find %s: %s\n",
+ fixup_props[j].node,
+ fdt_strerror(nodeoffset));
}
}
}
--
1.4.4.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2007-07-05 1:34 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-05 1:34 [U-Boot-Users] [PATCH 17/17] mpc83xx: Fix errors when CONFIG_OF_LIBFDT is enabled Jerry Van Baren
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.