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;
}