mpc83xx: remaining 8360 libfdt fixes
authorKim Phillips <kim.phillips@freescale.com>
Thu, 16 Aug 2007 03:30:19 +0000 (22:30 -0500)
committerKim Phillips <kim.phillips@freescale.com>
Thu, 16 Aug 2007 03:36:33 +0000 (22:36 -0500)
PCI clocks and QE frequencies weren't being updated, and the core clock
was being updated incorrectly.  This patch also adds a /memory node if
it doesn't already exist prior to update.

plus some cosmetic trimming to single line comments.

Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
board/mpc8360emds/mpc8360emds.c
board/mpc8360emds/pci.c
cpu/mpc83xx/cpu.c
cpu/mpc83xx/speed.c

index 3fa093d1d55eb598503c1ff94b5369db70312443..e37d2dcbeed746fc511486474532674e4d13fe64 100644 (file)
@@ -305,7 +305,15 @@ ft_board_setup(void *blob, bd_t *bd)
        int tmp[2];
 
        nodeoffset = fdt_find_node_by_path(blob, "/memory");
+       if (nodeoffset < 0) {
+               nodeoffset = fdt_add_subnode(blob, 0, "memory");
+               if (nodeoffset < 0)
+                       printf("WARNING: failed to add /memory node: %s\n",
+                               fdt_strerror(nodeoffset));
+       }
        if (nodeoffset >= 0) {
+               fdt_setprop(blob, nodeoffset, "device_type",
+                           "memory", sizeof("memory"));
                tmp[0] = cpu_to_be32(bd->bi_memstart);
                tmp[1] = cpu_to_be32(bd->bi_memsize);
                fdt_setprop(blob, nodeoffset, "reg", tmp, sizeof(tmp));
index 8f904710ca88d161ddd9d5e48f5502769bf49143..79812853e88d5469efaa71e3fe47e7ff71eee687 100644 (file)
@@ -22,7 +22,6 @@
 #include <ft_build.h>
 #elif defined(CONFIG_OF_LIBFDT)
 #include <libfdt.h>
-#include <libfdt_env.h>
 #endif
 
 #include <asm/fsl_i2c.h>
@@ -314,7 +313,12 @@ ft_pci_setup(void *blob, bd_t *bd)
        if (nodeoffset >= 0) {
                tmp[0] = cpu_to_be32(hose[0].first_busno);
                tmp[1] = cpu_to_be32(hose[0].last_busno);
-               err = fdt_setprop(blob, nodeoffset, "bus-range", tmp, sizeof(tmp));
+               err = fdt_setprop(blob, nodeoffset, "bus-range",
+                                 tmp, sizeof(tmp));
+
+               tmp[0] = cpu_to_be32(gd->pci_clk);
+               err = fdt_setprop(blob, nodeoffset, "clock-frequency",
+                                 tmp, sizeof(tmp[0]));
        }
 }
 #elif defined(CONFIG_OF_FLAT_TREE)
index a0754d18534445da2ea52eef5aa309fe6caf31c6..4deb5e516f1a3a7de8fa58fcc2320a9c07b61902 100644 (file)
 #include <ft_build.h>
 #elif defined(CONFIG_OF_LIBFDT)
 #include <libfdt.h>
-#include <libfdt_env.h>
 #endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
-
 int checkcpu(void)
 {
        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)
 {
-       /*
-        * 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)) {
                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 */
 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)) {
                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 */
 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)) {
                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 */
 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)) {
                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)
 {
        u32  tmp;
-       /*
-        * Create or update the property.
-        */
+       /* Create or update the property */
        tmp = cpu_to_be32(bd->bi_busfreq);
        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)
 {
        u32  tmp;
-       /*
-        * Create or update the property.
-        */
+       /* Create or update the property */
        tmp = cpu_to_be32(OF_TBCLK);
        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.
  */
@@ -420,6 +432,10 @@ static const struct {
        },
        {       "/cpus/" OF_CPU,
                "clock-frequency",
+               fdt_set_clockfreq
+       },
+       {       "/" OF_SOC,
+               "bus-frequency",
                fdt_set_busfreq
        },
        {       "/" OF_SOC "/serial@4500",
@@ -450,6 +466,15 @@ static const struct {
                fdt_set_eth1
        },
 #endif
+#ifdef CONFIG_QE
+       {       "/" OF_QE,
+               "brg-frequency",
+               fdt_set_qe_brgfreq
+       },
+       {       "/" OF_QE,
+               "bus-frequency",
+               fdt_set_qe_busfreq
+       },
 #ifdef CONFIG_UEC_ETH1
 #if CFG_UEC1_UCC_NUM == 0  /* UCC1 */
        {       "/" OF_QE "/ucc@2000",
@@ -492,6 +517,7 @@ static const struct {
        },
 #endif
 #endif /* CONFIG_UEC_ETH2 */
+#endif /* CONFIG_QE */
 };
 
 void
index bf30616548e93812947f4a8c09d4c9c335bd621d..cba57fadb996f70ad48792969312c92a5d4f234f 100644 (file)
@@ -351,6 +351,7 @@ int get_clocks(void)
        gd->qe_clk = qe_clk;
        gd->brg_clk = brg_clk;
 #endif
+       gd->pci_clk = pci_sync_in;
        gd->cpu_clk = gd->core_clk;
        gd->bus_clk = gd->csb_clk;
        return 0;