|
@@ -35,12 +35,10 @@
|
|
#include <ft_build.h>
|
|
#include <ft_build.h>
|
|
#elif defined(CONFIG_OF_LIBFDT)
|
|
#elif defined(CONFIG_OF_LIBFDT)
|
|
#include <libfdt.h>
|
|
#include <libfdt.h>
|
|
-#include <libfdt_env.h>
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
-
|
|
|
|
int checkcpu(void)
|
|
int checkcpu(void)
|
|
{
|
|
{
|
|
volatile immap_t *immr;
|
|
volatile immap_t *immr;
|
|
@@ -333,9 +331,7 @@ void watchdog_reset (void)
|
|
*/
|
|
*/
|
|
static int fdt_set_eth0(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_eth0(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
{
|
|
{
|
|
- /*
|
|
|
|
- * Fix it up if it exists, don't create it if it doesn't exist.
|
|
|
|
- */
|
|
|
|
|
|
+ /* Fix it up if it exists, don't create it if it doesn't exist */
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enetaddr, 6);
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enetaddr, 6);
|
|
}
|
|
}
|
|
@@ -345,9 +341,7 @@ static int fdt_set_eth0(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
/* second onboard ethernet port */
|
|
/* second onboard ethernet port */
|
|
static int fdt_set_eth1(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_eth1(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
{
|
|
{
|
|
- /*
|
|
|
|
- * Fix it up if it exists, don't create it if it doesn't exist.
|
|
|
|
- */
|
|
|
|
|
|
+ /* Fix it up if it exists, don't create it if it doesn't exist */
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet1addr, 6);
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet1addr, 6);
|
|
}
|
|
}
|
|
@@ -358,9 +352,7 @@ static int fdt_set_eth1(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
/* third onboard ethernet port */
|
|
/* third onboard ethernet port */
|
|
static int fdt_set_eth2(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_eth2(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
{
|
|
{
|
|
- /*
|
|
|
|
- * Fix it up if it exists, don't create it if it doesn't exist.
|
|
|
|
- */
|
|
|
|
|
|
+ /* Fix it up if it exists, don't create it if it doesn't exist */
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet2addr, 6);
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet2addr, 6);
|
|
}
|
|
}
|
|
@@ -371,9 +363,7 @@ static int fdt_set_eth2(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
/* fourth onboard ethernet port */
|
|
/* fourth onboard ethernet port */
|
|
static int fdt_set_eth3(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_eth3(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
{
|
|
{
|
|
- /*
|
|
|
|
- * Fix it up if it exists, don't create it if it doesn't exist.
|
|
|
|
- */
|
|
|
|
|
|
+ /* Fix it up if it exists, don't create it if it doesn't exist */
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet3addr, 6);
|
|
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet3addr, 6);
|
|
}
|
|
}
|
|
@@ -384,9 +374,7 @@ static int fdt_set_eth3(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_busfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_busfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
{
|
|
{
|
|
u32 tmp;
|
|
u32 tmp;
|
|
- /*
|
|
|
|
- * Create or update the property.
|
|
|
|
- */
|
|
|
|
|
|
+ /* Create or update the property */
|
|
tmp = cpu_to_be32(bd->bi_busfreq);
|
|
tmp = cpu_to_be32(bd->bi_busfreq);
|
|
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
}
|
|
}
|
|
@@ -394,14 +382,38 @@ static int fdt_set_busfreq(void *blob, int nodeoffset, const char *name, bd_t *b
|
|
static int fdt_set_tbfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
static int fdt_set_tbfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
{
|
|
{
|
|
u32 tmp;
|
|
u32 tmp;
|
|
- /*
|
|
|
|
- * Create or update the property.
|
|
|
|
- */
|
|
|
|
|
|
+ /* Create or update the property */
|
|
tmp = cpu_to_be32(OF_TBCLK);
|
|
tmp = cpu_to_be32(OF_TBCLK);
|
|
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+static int fdt_set_clockfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
|
|
+{
|
|
|
|
+ u32 tmp;
|
|
|
|
+ /* Create or update the property */
|
|
|
|
+ tmp = cpu_to_be32(gd->core_clk);
|
|
|
|
+ return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_QE
|
|
|
|
+static int fdt_set_qe_busfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
|
|
+{
|
|
|
|
+ u32 tmp;
|
|
|
|
+ /* Create or update the property */
|
|
|
|
+ tmp = cpu_to_be32(gd->qe_clk);
|
|
|
|
+ return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int fdt_set_qe_brgfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
|
|
|
+{
|
|
|
|
+ u32 tmp;
|
|
|
|
+ /* Create or update the property */
|
|
|
|
+ tmp = cpu_to_be32(gd->brg_clk);
|
|
|
|
+ return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Fixups to the fdt.
|
|
* Fixups to the fdt.
|
|
*/
|
|
*/
|
|
@@ -420,6 +432,10 @@ static const struct {
|
|
},
|
|
},
|
|
{ "/cpus/" OF_CPU,
|
|
{ "/cpus/" OF_CPU,
|
|
"clock-frequency",
|
|
"clock-frequency",
|
|
|
|
+ fdt_set_clockfreq
|
|
|
|
+ },
|
|
|
|
+ { "/" OF_SOC,
|
|
|
|
+ "bus-frequency",
|
|
fdt_set_busfreq
|
|
fdt_set_busfreq
|
|
},
|
|
},
|
|
{ "/" OF_SOC "/serial@4500",
|
|
{ "/" OF_SOC "/serial@4500",
|
|
@@ -450,6 +466,15 @@ static const struct {
|
|
fdt_set_eth1
|
|
fdt_set_eth1
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
|
|
+#ifdef CONFIG_QE
|
|
|
|
+ { "/" OF_QE,
|
|
|
|
+ "brg-frequency",
|
|
|
|
+ fdt_set_qe_brgfreq
|
|
|
|
+ },
|
|
|
|
+ { "/" OF_QE,
|
|
|
|
+ "bus-frequency",
|
|
|
|
+ fdt_set_qe_busfreq
|
|
|
|
+ },
|
|
#ifdef CONFIG_UEC_ETH1
|
|
#ifdef CONFIG_UEC_ETH1
|
|
#if CFG_UEC1_UCC_NUM == 0 /* UCC1 */
|
|
#if CFG_UEC1_UCC_NUM == 0 /* UCC1 */
|
|
{ "/" OF_QE "/ucc@2000",
|
|
{ "/" OF_QE "/ucc@2000",
|
|
@@ -492,6 +517,7 @@ static const struct {
|
|
},
|
|
},
|
|
#endif
|
|
#endif
|
|
#endif /* CONFIG_UEC_ETH2 */
|
|
#endif /* CONFIG_UEC_ETH2 */
|
|
|
|
+#endif /* CONFIG_QE */
|
|
};
|
|
};
|
|
|
|
|
|
void
|
|
void
|