#include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/of_address.h>
 #include <linux/of_device.h>
 #include <linux/cpumask.h>
 #include <linux/slab.h>
                                struct spu_mdesc_info *ip,
                                const char *node_name)
 {
-       const unsigned int *reg;
-       u64 node;
+       u64 node, reg;
 
-       reg = of_get_property(dev->dev.of_node, "reg", NULL);
-       if (!reg)
+       if (of_property_read_reg(dev->dev.of_node, 0, ®, NULL) < 0)
                return -ENODEV;
 
        mdesc_for_each_node_by_name(mdesc, node, "virtual-device") {
                if (!name || strcmp(name, node_name))
                        continue;
                chdl = mdesc_get_property(mdesc, node, "cfg-handle", NULL);
-               if (!chdl || (*chdl != *reg))
+               if (!chdl || (*chdl != reg))
                        continue;
                ip->cfg_handle = *chdl;
                return get_irq_props(mdesc, node, ip);