unsigned int val)
 {
        struct regmap *map = context;
+       struct regmap_range_node *range;
+       int ret;
+
+       range = _regmap_range_lookup(map, reg);
+       if (range) {
+               ret = _regmap_select_page(map, ®, range, 1);
+               if (ret != 0)
+                       return ret;
+       }
 
        reg = regmap_reg_addr(map, reg);
        return map->bus->reg_write(map->bus_context, reg, val);
                                unsigned int *val)
 {
        struct regmap *map = context;
+       struct regmap_range_node *range;
+       int ret;
+
+       range = _regmap_range_lookup(map, reg);
+       if (range) {
+               ret = _regmap_select_page(map, ®, range, 1);
+               if (ret != 0)
+                       return ret;
+       }
 
        reg = regmap_reg_addr(map, reg);
        return map->bus->reg_read(map->bus_context, reg, val);