]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branches 'regmap/topic/range' and 'regmap/topic/type', tag...
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 15 Oct 2012 01:04:58 +0000 (10:04 +0900)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 15 Oct 2012 01:04:58 +0000 (10:04 +0900)
regmap: irq: irqdomain retrieval support

Allow users to retrieve the irqdomain allocated by regmap-irq for
integration with other subsystems that work with domains.

1  2  3  4 
drivers/base/regmap/regmap-irq.c
drivers/base/regmap/regmap.c
include/linux/regmap.h

Simple merge
index 52069d29ff12ef197c7d8a447ab27ffb7096d85e,c241ae2f2f10b91e8998e5b657d5f739cc0c0b7b,96253cd949e98cddbf433e68913b6c4051d337fa,94555951b6e13aa57be595c8a657c4a2ad25b93b..15261744e1ca0b9e4f13d973691ec72314ce9e5d
@@@@@ -747,44 -752,44 -774,41 -747,44 +774,41 @@@@@ static int _regmap_select_page(struct r
        bool page_chg;
        int ret;
    
-- -    range = _regmap_range_lookup(map, *reg);
-- -    if (range) {
-- -            win_offset = (*reg - range->range_min) % range->window_len;
-- -            win_page = (*reg - range->range_min) / range->window_len;
-  -
-  -            if (val_num > 1) {
-  -                    /* Bulk write shouldn't cross range boundary */
-  -                    if (*reg + val_num - 1 > range->range_max)
-  -                            return -EINVAL;
++ +    win_offset = (*reg - range->range_min) % range->window_len;
++ +    win_page = (*reg - range->range_min) / range->window_len;
    
-  -                    /* ... or single page boundary */
-  -                    if (val_num > range->window_len - win_offset)
 -              if (val_num > 1) {
 -                      /* Bulk write shouldn't cross range boundary */
 -                      if (*reg + val_num - 1 > range->range_max)
-- -                            return -EINVAL;
-  -            }
++ +    if (val_num > 1) {
++ +            /* Bulk write shouldn't cross range boundary */
++ +            if (*reg + val_num - 1 > range->range_max)
++ +                    return -EINVAL;
    
-  -            /* It is possible to have selector register inside data window.
-  -               In that case, selector register is located on every page and
-  -               it needs no page switching, when accessed alone. */
-  -            if (val_num > 1 ||
-  -                range->window_start + win_offset != range->selector_reg) {
-  -                    /* Use separate work_buf during page switching */
-  -                    orig_work_buf = map->work_buf;
-  -                    map->work_buf = map->selector_work_buf;
 -                      /* ... or single page boundary */
 -                      if (val_num > range->window_len - win_offset)
 -                              return -EINVAL;
 -              }
++ +            /* ... or single page boundary */
++ +            if (val_num > range->window_len - win_offset)
++ +                    return -EINVAL;
++ +    }
    
-  -                    ret = _regmap_update_bits(map, range->selector_reg,
-  -                                    range->selector_mask,
-  -                                    win_page << range->selector_shift,
-  -                                    &page_chg);
 -              /* It is possible to have selector register inside data window.
 -                 In that case, selector register is located on every page and
 -                 it needs no page switching, when accessed alone. */
 -              if (val_num > 1 ||
 -                  range->window_start + win_offset != range->selector_reg) {
 -                      /* Use separate work_buf during page switching */
 -                      orig_work_buf = map->work_buf;
 -                      map->work_buf = map->selector_work_buf;
++ +    /* It is possible to have selector register inside data window.
++ +       In that case, selector register is located on every page and
++ +       it needs no page switching, when accessed alone. */
++ +    if (val_num > 1 ||
++ +        range->window_start + win_offset != range->selector_reg) {
++ +            /* Use separate work_buf during page switching */
++ +            orig_work_buf = map->work_buf;
++ +            map->work_buf = map->selector_work_buf;
    
-  -                    map->work_buf = orig_work_buf;
 -                      ret = _regmap_update_bits(map, range->selector_reg,
 -                                      range->selector_mask,
 -                                      win_page << range->selector_shift,
 -                                      &page_chg);
++ +            ret = _regmap_update_bits(map, range->selector_reg,
++ +                                      range->selector_mask,
++ +                                      win_page << range->selector_shift,
++ +                                      &page_chg);
    
-  -                    if (ret < 0)
-  -                            return ret;
-  -            }
 -                      map->work_buf = orig_work_buf;
++ +            map->work_buf = orig_work_buf;
    
 -                      if (ret < 0)
 -                              return ret;
 -              }
 -  
-- -            *reg = range->window_start + win_offset;
++ +            if (ret != 0)
++ +                    return ret;
        }
    
++ +    *reg = range->window_start + win_offset;
++ +
        return 0;
    }
    
Simple merge