/* Get bus frequency */
        rp = of_find_node_by_path("/");
+       if (!rp)
+               return -ENODEV;
        rp = of_get_next_child(rp, NULL);
+       if (!rp)
+               return -ENODEV;
        prop = of_get_property(rp, "clock-frequency", NULL);
+       if (!prop)
+               return -ENODEV;
        freq_khz = *prop;
  
-       line = 0;
        for_each_matching_node(np, apbuart_match) {
 -              const int *irqs = of_get_property(np, "interrupts", NULL);
++              const int *irqs, *ampopts;
+               const struct amba_prom_registers *regs;
+               struct uart_port *port;
+               unsigned long addr;
  
-               int *vendor = (int *) of_get_property(np, "vendor", NULL);
-               int *device = (int *) of_get_property(np, "device", NULL);
-               int *irqs = (int *) of_get_property(np, "interrupts", NULL);
-               int *ampopts = (int *) of_get_property(np, "ampopts", NULL);
-               regs = (struct amba_prom_registers *)
-                   of_get_property(np, "reg", NULL);
- 
++              ampopts = of_get_property(np, "ampopts", NULL);
 +              if (ampopts && (*ampopts == 0))
 +                      continue; /* Ignore if used by another OS instance */
-               if (vendor)
-                       v = *vendor;
-               if (device)
-                       d = *device;
++
++              irqs = of_get_property(np, "interrupts", NULL);
+               regs = of_get_property(np, "reg", NULL);
  
                if (!irqs || !regs)
-                       return;
 -                      return -ENODEV;
++                      continue;
  
                grlib_apbuart_nodes[line] = np;