]> git.sur5r.net Git - u-boot/blobdiff - arch/powerpc/cpu/mpc85xx/fdt.c
powerpc: T2080, T2081: Remove macro CONFIG_PPC_T2080 and CONFIG_PPC_T2081
[u-boot] / arch / powerpc / cpu / mpc85xx / fdt.c
index 3222e26a5aa3e2ab66fc348ceb8e3782918d92c3..6bde60d059fcb248fccfaa82447cb4d8427d3951 100644 (file)
 #include <asm/processor.h>
 #include <linux/ctype.h>
 #include <asm/io.h>
+#include <asm/fsl_fdt.h>
 #include <asm/fsl_portals.h>
 #include <hwconfig.h>
 #ifdef CONFIG_FSL_ESDHC
 #include <fsl_esdhc.h>
 #endif
-#include "../../../../drivers/qe/qe.h"         /* For struct qe_firmware */
+#ifdef CONFIG_SYS_DPAA_FMAN
+#include <fsl_fman.h>
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -487,126 +490,7 @@ static void ft_fixup_qe_snum(void *blob)
 }
 #endif
 
-/**
- * fdt_fixup_fman_firmware -- insert the Fman firmware into the device tree
- *
- * The binding for an Fman firmware node is documented in
- * Documentation/powerpc/dts-bindings/fsl/dpaa/fman.txt.  This node contains
- * the actual Fman firmware binary data.  The operating system is expected to
- * be able to parse the binary data to determine any attributes it needs.
- */
-#ifdef CONFIG_SYS_DPAA_FMAN
-void fdt_fixup_fman_firmware(void *blob)
-{
-       int rc, fmnode, fwnode = -1;
-       uint32_t phandle;
-       struct qe_firmware *fmanfw;
-       const struct qe_header *hdr;
-       unsigned int length;
-       uint32_t crc;
-       const char *p;
-
-       /* The first Fman we find will contain the actual firmware. */
-       fmnode = fdt_node_offset_by_compatible(blob, -1, "fsl,fman");
-       if (fmnode < 0)
-               /* Exit silently if there are no Fman devices */
-               return;
-
-       /* If we already have a firmware node, then also exit silently. */
-       if (fdt_node_offset_by_compatible(blob, -1, "fsl,fman-firmware") > 0)
-               return;
-
-       /* If the environment variable is not set, then exit silently */
-       p = getenv("fman_ucode");
-       if (!p)
-               return;
-
-       fmanfw = (struct qe_firmware *) simple_strtoul(p, NULL, 16);
-       if (!fmanfw)
-               return;
-
-       hdr = &fmanfw->header;
-       length = be32_to_cpu(hdr->length);
-
-       /* Verify the firmware. */
-       if ((hdr->magic[0] != 'Q') || (hdr->magic[1] != 'E') ||
-               (hdr->magic[2] != 'F')) {
-               printf("Data at %p is not an Fman firmware\n", fmanfw);
-               return;
-       }
-
-       if (length > CONFIG_SYS_QE_FMAN_FW_LENGTH) {
-               printf("Fman firmware at %p is too large (size=%u)\n",
-                      fmanfw, length);
-               return;
-       }
-
-       length -= sizeof(u32);  /* Subtract the size of the CRC */
-       crc = be32_to_cpu(*(u32 *)((void *)fmanfw + length));
-       if (crc != crc32_no_comp(0, (void *)fmanfw, length)) {
-               printf("Fman firmware at %p has invalid CRC\n", fmanfw);
-               return;
-       }
-
-       /* Increase the size of the fdt to make room for the node. */
-       rc = fdt_increase_size(blob, fmanfw->header.length);
-       if (rc < 0) {
-               printf("Unable to make room for Fman firmware: %s\n",
-                       fdt_strerror(rc));
-               return;
-       }
-
-       /* Create the firmware node. */
-       fwnode = fdt_add_subnode(blob, fmnode, "fman-firmware");
-       if (fwnode < 0) {
-               char s[64];
-               fdt_get_path(blob, fmnode, s, sizeof(s));
-               printf("Could not add firmware node to %s: %s\n", s,
-                      fdt_strerror(fwnode));
-               return;
-       }
-       rc = fdt_setprop_string(blob, fwnode, "compatible", "fsl,fman-firmware");
-       if (rc < 0) {
-               char s[64];
-               fdt_get_path(blob, fwnode, s, sizeof(s));
-               printf("Could not add compatible property to node %s: %s\n", s,
-                      fdt_strerror(rc));
-               return;
-       }
-       phandle = fdt_create_phandle(blob, fwnode);
-       if (!phandle) {
-               char s[64];
-               fdt_get_path(blob, fwnode, s, sizeof(s));
-               printf("Could not add phandle property to node %s: %s\n", s,
-                      fdt_strerror(rc));
-               return;
-       }
-       rc = fdt_setprop(blob, fwnode, "fsl,firmware", fmanfw, fmanfw->header.length);
-       if (rc < 0) {
-               char s[64];
-               fdt_get_path(blob, fwnode, s, sizeof(s));
-               printf("Could not add firmware property to node %s: %s\n", s,
-                      fdt_strerror(rc));
-               return;
-       }
-
-       /* Find all other Fman nodes and point them to the firmware node. */
-       while ((fmnode = fdt_node_offset_by_compatible(blob, fmnode, "fsl,fman")) > 0) {
-               rc = fdt_setprop_cell(blob, fmnode, "fsl,firmware-phandle", phandle);
-               if (rc < 0) {
-                       char s[64];
-                       fdt_get_path(blob, fmnode, s, sizeof(s));
-                       printf("Could not add pointer property to node %s: %s\n",
-                              s, fdt_strerror(rc));
-                       return;
-               }
-       }
-}
-#else
-#define fdt_fixup_fman_firmware(x)
-#endif
-
-#if defined(CONFIG_PPC_P4080)
+#if defined(CONFIG_ARCH_P4080)
 static void fdt_fixup_usb(void *fdt)
 {
        ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
@@ -627,7 +511,7 @@ static void fdt_fixup_usb(void *fdt)
 #define fdt_fixup_usb(x)
 #endif
 
-#if defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T4240) || \
+#if defined(CONFIG_ARCH_T2080) || defined(CONFIG_PPC_T4240) || \
        defined(CONFIG_PPC_T4160) || defined(CONFIG_PPC_T4080)
 void fdt_fixup_dma3(void *blob)
 {
@@ -636,7 +520,7 @@ void fdt_fixup_dma3(void *blob)
        ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
 
 #define CONFIG_SYS_ELO3_DMA3 (0xffe000000 + 0x102300)
-#if defined(CONFIG_PPC_T2080)
+#if defined(CONFIG_ARCH_T2080)
        u32 srds_prtcl_s2 = in_be32(&gur->rcwsr[4]) &
                                    FSL_CORENET2_RCWSR4_SRDS2_PRTCL;
        srds_prtcl_s2 >>= FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT;
@@ -672,7 +556,7 @@ void fdt_fixup_dma3(void *blob)
 #define fdt_fixup_dma3(x)
 #endif
 
-#if defined(CONFIG_PPC_T1040)
+#if defined(CONFIG_ARCH_T1040)
 static void fdt_fixup_l2_switch(void *blob)
 {
        uchar l2swaddr[6];
@@ -714,7 +598,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
                ccsr_sec_t __iomem *sec;
 
                sec = (void __iomem *)CONFIG_SYS_FSL_SEC_ADDR;
-               fdt_fixup_crypto_node(blob, in_be32(&sec->secvid_ms));
+               fdt_fixup_crypto_node(blob, sec_in32(&sec->secvid_ms));
        }
 #endif
 
@@ -742,16 +626,14 @@ void ft_cpu_setup(void *blob, bd_t *bd)
        do_fixup_by_prop_u32(blob, "device_type", "soc", 4,
                "bus-frequency", bd->bi_busfreq, 1);
 
-       do_fixup_by_compat_u32(blob, "fsl,pq3-localbus",
-               "bus-frequency", gd->arch.lbc_clk, 1);
-       do_fixup_by_compat_u32(blob, "fsl,elbc",
-               "bus-frequency", gd->arch.lbc_clk, 1);
 #ifdef CONFIG_QE
        ft_qe_setup(blob);
        ft_fixup_qe_snum(blob);
 #endif
 
+#ifdef CONFIG_SYS_DPAA_FMAN
        fdt_fixup_fman_firmware(blob);
+#endif
 
 #ifdef CONFIG_SYS_NS16550
        do_fixup_by_compat_u32(blob, "ns16550",
@@ -943,3 +825,13 @@ int ft_verify_fdt(void *fdt)
 
        return 1;
 }
+
+void fdt_del_diu(void *blob)
+{
+       int nodeoff = 0;
+
+       while ((nodeoff = fdt_node_offset_by_compatible(blob, 0,
+                               "fsl,diu")) >= 0) {
+               fdt_del_node(blob, nodeoff);
+       }
+}