counter_32k = -ENODEV;
 
        for_each_matching_node(np, dmtimer_match_table) {
+               struct resource res;
                if (!dmtimer_is_preferred(np))
                        continue;
 
-               if (of_property_read_bool(np, "ti,timer-alwon")) {
-                       const __be32 *addr;
-
-                       addr = of_get_address(np, 0, NULL, NULL);
-                       pa = of_translate_address(np, addr);
-                       if (pa) {
-                               /* Quirky omap3 boards must use dmtimer12 */
-                               if (quirk_unreliable_oscillator &&
-                                   pa == 0x48318000)
-                                       continue;
-
-                               of_node_put(np);
-                               break;
-                       }
-               }
+               if (!of_property_read_bool(np, "ti,timer-alwon"))
+                       continue;
+
+               if (of_address_to_resource(np, 0, &res))
+                       continue;
+
+               /* Quirky omap3 boards must use dmtimer12 */
+               if (quirk_unreliable_oscillator && res.start == 0x48318000)
+                       continue;
+
+               of_node_put(np);
+               break;
        }
 
        /* Usually no need for dmtimer clocksource if we have counter32 */
 static u32 __init dmtimer_systimer_find_first_available(void)
 {
        struct device_node *np;
-       const __be32 *addr;
        u32 pa = 0;
 
        for_each_matching_node(np, dmtimer_match_table) {
+               struct resource res;
                if (!dmtimer_is_preferred(np))
                        continue;
 
-               addr = of_get_address(np, 0, NULL, NULL);
-               pa = of_translate_address(np, addr);
-               if (pa) {
-                       if (pa == clocksource || pa == clockevent) {
-                               pa = 0;
-                               continue;
-                       }
-
-                       of_node_put(np);
-                       break;
-               }
+               if (of_address_to_resource(np, 0, &res))
+                       continue;
+
+               if (res.start == clocksource || res.start == clockevent)
+                       continue;
+
+               pa = res.start;
+               of_node_put(np);
+               break;
        }
 
        return pa;
  */
 static int __init dmtimer_systimer_init(struct device_node *np)
 {
-       const __be32 *addr;
+       struct resource res;
        u32 pa;
 
        /* One time init for the preferred timer configuration */
                return -EINVAL;
        }
 
-       addr = of_get_address(np, 0, NULL, NULL);
-       pa = of_translate_address(np, addr);
+
+       of_address_to_resource(np, 0, &res);
+       pa = (u32)res.start;
        if (!pa)
                return -EINVAL;