static void cg14_init_fix(struct fb_info *info, int linebytes,
                          struct device_node *dp)
 {
-       const char *name = dp->name;
-
-       strlcpy(info->fix.id, name, sizeof(info->fix.id));
+       snprintf(info->fix.id, sizeof(info->fix.id), "%pOFn", dp);
 
        info->fix.type = FB_TYPE_PACKED_PIXELS;
        info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
 
 static void cg3_init_fix(struct fb_info *info, int linebytes,
                         struct device_node *dp)
 {
-       strlcpy(info->fix.id, dp->name, sizeof(info->fix.id));
+       snprintf(info->fix.id, sizeof(info->fix.id), "%pOFn", dp);
 
        info->fix.type = FB_TYPE_PACKED_PIXELS;
        info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
 
        if (ret)
                return ret;
 
-       pr_debug("%pOF: got %dx%d display mode from %s\n",
-               np, vm.hactive, vm.vactive, np->name);
+       pr_debug("%pOF: got %dx%d display mode\n",
+               np, vm.hactive, vm.vactive);
        dump_fb_videomode(fb);
 
        return 0;
 
        
        dp = pci_device_to_OF_node(pdev);
        if(dp)
-               printk(KERN_INFO "%s: OF name %s\n",__func__, dp->name);
+               printk(KERN_INFO "%s: OF name %pOFn\n",__func__, dp);
        else if (IS_ENABLED(CONFIG_OF))
                printk(KERN_ERR "imsttfb: no OF node for pci device\n");
 
 
 static void
 leo_init_fix(struct fb_info *info, struct device_node *dp)
 {
-       strlcpy(info->fix.id, dp->name, sizeof(info->fix.id));
+       snprintf(info->fix.id, sizeof(info->fix.id), "%pOFn", dp);
 
        info->fix.type = FB_TYPE_PACKED_PIXELS;
        info->fix.visual = FB_VISUAL_TRUECOLOR;
 
        var = &info->var;
        info->par = par;
 
-       strcpy(fix->id, "OFfb ");
-       strncat(fix->id, name, sizeof(fix->id) - sizeof("OFfb "));
-       fix->id[sizeof(fix->id) - 1] = '\0';
+       if (name) {
+               strcpy(fix->id, "OFfb ");
+               strncat(fix->id, name, sizeof(fix->id) - sizeof("OFfb "));
+               fix->id[sizeof(fix->id) - 1] = '\0';
+       } else
+               snprintf(fix->id, sizeof(fix->id), "OFfb %pOFn", dp);
+
 
        var->xres = var->xres_virtual = width;
        var->yres = var->yres_virtual = height;
                /* kludge for valkyrie */
                if (strcmp(dp->name, "valkyrie") == 0)
                        address += 0x1000;
-               offb_init_fb(no_real_node ? "bootx" : dp->name,
+               offb_init_fb(no_real_node ? "bootx" : NULL,
                             width, height, depth, pitch, address,
                             foreign_endian, no_real_node ? NULL : dp);
        }
 
 
 static void p9100_init_fix(struct fb_info *info, int linebytes, struct device_node *dp)
 {
-       strlcpy(info->fix.id, dp->name, sizeof(info->fix.id));
+       snprintf(info->fix.id, sizeof(info->fix.id), "%pOFn", dp);
 
        info->fix.type = FB_TYPE_PACKED_PIXELS;
        info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
 
                goto entryfail;
        }
 
-       pr_debug("%pOF: using %s as default timing\n", np, entry->name);
+       pr_debug("%pOF: using %pOFn as default timing\n", np, entry);
 
        native_mode = entry;