#define SVERSION_ANY_ID                PA_SVERSION_ANY_ID
 
 struct hp_hardware {
-       unsigned short  hw_type:5;      /* HPHW_xxx */
-       unsigned short  hversion;
-       unsigned long   sversion:28;
-       unsigned short  opt;
-       const char      name[80];       /* The hardware description */
-};
+       unsigned int    hw_type:8;      /* HPHW_xxx */
+       unsigned int    hversion:12;
+       unsigned int    sversion:12;
+       unsigned char   opt;
+       unsigned char   name[59];       /* The hardware description */
+} __packed;
 
 struct parisc_device;
 
 
                        &root);
 }
 
-static void print_parisc_device(struct parisc_device *dev)
+static __init void print_parisc_device(struct parisc_device *dev)
 {
-       char hw_path[64];
-       static int count;
+       static int count __initdata;
 
-       print_pa_hwpath(dev, hw_path);
-       pr_info("%d. %s at %pap [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
-               ++count, dev->name, &(dev->hpa.start), hw_path, dev->id.hw_type,
-               dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
+       pr_info("%d. %s at %pap { type:%d, hv:%#x, sv:%#x, rev:%#x }",
+               ++count, dev->name, &(dev->hpa.start), dev->id.hw_type,
+               dev->id.hversion, dev->id.sversion, dev->id.hversion_rev);
 
        if (dev->num_addrs) {
                int k;
 
 
 
-static int print_one_device(struct device * dev, void * data)
+static __init int print_one_device(struct device * dev, void * data)
 {
        struct parisc_device * pdev = to_parisc_device(dev);