#endif
 
 #if defined(CONFIG_PPC64) && defined(CONFIG_PPC_PMAC)
-static void __init fixup_device_tree_pmac(void)
+static void __init fixup_device_tree_pmac64(void)
 {
        phandle u3, i2c, mpic;
        u32 u3_rev;
                     &parent, sizeof(parent));
 }
 #else
-#define fixup_device_tree_pmac()
+#define fixup_device_tree_pmac64()
+#endif
+
+#ifdef CONFIG_PPC_PMAC
+static void __init fixup_device_tree_pmac(void)
+{
+       __be32 val = 1;
+       char type[8];
+       phandle node;
+
+       // Some pmacs are missing #size-cells on escc nodes
+       for (node = 0; prom_next_node(&node); ) {
+               type[0] = '\0';
+               prom_getprop(node, "device_type", type, sizeof(type));
+               if (prom_strcmp(type, "escc"))
+                       continue;
+
+               if (prom_getproplen(node, "#size-cells") != PROM_ERROR)
+                       continue;
+
+               prom_setprop(node, NULL, "#size-cells", &val, sizeof(val));
+       }
+}
+#else
+static inline void fixup_device_tree_pmac(void) { }
 #endif
 
 #ifdef CONFIG_PPC_EFIKA
 {
        fixup_device_tree_chrp();
        fixup_device_tree_pmac();
+       fixup_device_tree_pmac64();
        fixup_device_tree_efika();
        fixup_device_tree_pasemi();
 }