Loading drivers/base/regmap/regmap.c +51 −40 Original line number Diff line number Diff line Loading @@ -765,17 +765,15 @@ struct regmap *dev_get_regmap(struct device *dev, const char *name) EXPORT_SYMBOL_GPL(dev_get_regmap); static int _regmap_select_page(struct regmap *map, unsigned int *reg, struct regmap_range_node *range, unsigned int val_num) { struct regmap_range_node *range; void *orig_work_buf; unsigned int win_offset; unsigned int win_page; 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; Loading Loading @@ -810,7 +808,6 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, } *reg = range->window_start + win_offset; } return 0; } Loading @@ -818,6 +815,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, static int _regmap_raw_write(struct regmap *map, unsigned int reg, const void *val, size_t val_len) { struct regmap_range_node *range; u8 *u8 = map->work_buf; void *buf; int ret = -ENOTSUPP; Loading Loading @@ -852,9 +850,13 @@ static int _regmap_raw_write(struct regmap *map, unsigned int reg, } } ret = _regmap_select_page(map, ®, val_len / map->format.val_bytes); range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, val_len / map->format.val_bytes); if (ret < 0) return ret; } map->format.format_reg(map->work_buf, reg, map->reg_shift); Loading Loading @@ -903,6 +905,7 @@ static int _regmap_raw_write(struct regmap *map, unsigned int reg, int _regmap_write(struct regmap *map, unsigned int reg, unsigned int val) { struct regmap_range_node *range; int ret; BUG_ON(!map->format.format_write && !map->format.format_val); Loading @@ -924,9 +927,12 @@ int _regmap_write(struct regmap *map, unsigned int reg, trace_regmap_reg_write(map->dev, reg, val); if (map->format.format_write) { ret = _regmap_select_page(map, ®, 1); range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, 1); if (ret < 0) return ret; } map->format.format_write(map, reg, val); Loading Loading @@ -1082,12 +1088,17 @@ EXPORT_SYMBOL_GPL(regmap_bulk_write); static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val, unsigned int val_len) { struct regmap_range_node *range; u8 *u8 = map->work_buf; int ret; ret = _regmap_select_page(map, ®, val_len / map->format.val_bytes); range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, val_len / map->format.val_bytes); if (ret < 0) return ret; } map->format.format_reg(map->work_buf, reg, map->reg_shift); Loading Loading
drivers/base/regmap/regmap.c +51 −40 Original line number Diff line number Diff line Loading @@ -765,17 +765,15 @@ struct regmap *dev_get_regmap(struct device *dev, const char *name) EXPORT_SYMBOL_GPL(dev_get_regmap); static int _regmap_select_page(struct regmap *map, unsigned int *reg, struct regmap_range_node *range, unsigned int val_num) { struct regmap_range_node *range; void *orig_work_buf; unsigned int win_offset; unsigned int win_page; 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; Loading Loading @@ -810,7 +808,6 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, } *reg = range->window_start + win_offset; } return 0; } Loading @@ -818,6 +815,7 @@ static int _regmap_select_page(struct regmap *map, unsigned int *reg, static int _regmap_raw_write(struct regmap *map, unsigned int reg, const void *val, size_t val_len) { struct regmap_range_node *range; u8 *u8 = map->work_buf; void *buf; int ret = -ENOTSUPP; Loading Loading @@ -852,9 +850,13 @@ static int _regmap_raw_write(struct regmap *map, unsigned int reg, } } ret = _regmap_select_page(map, ®, val_len / map->format.val_bytes); range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, val_len / map->format.val_bytes); if (ret < 0) return ret; } map->format.format_reg(map->work_buf, reg, map->reg_shift); Loading Loading @@ -903,6 +905,7 @@ static int _regmap_raw_write(struct regmap *map, unsigned int reg, int _regmap_write(struct regmap *map, unsigned int reg, unsigned int val) { struct regmap_range_node *range; int ret; BUG_ON(!map->format.format_write && !map->format.format_val); Loading @@ -924,9 +927,12 @@ int _regmap_write(struct regmap *map, unsigned int reg, trace_regmap_reg_write(map->dev, reg, val); if (map->format.format_write) { ret = _regmap_select_page(map, ®, 1); range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, 1); if (ret < 0) return ret; } map->format.format_write(map, reg, val); Loading Loading @@ -1082,12 +1088,17 @@ EXPORT_SYMBOL_GPL(regmap_bulk_write); static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val, unsigned int val_len) { struct regmap_range_node *range; u8 *u8 = map->work_buf; int ret; ret = _regmap_select_page(map, ®, val_len / map->format.val_bytes); range = _regmap_range_lookup(map, reg); if (range) { ret = _regmap_select_page(map, ®, range, val_len / map->format.val_bytes); if (ret < 0) return ret; } map->format.format_reg(map->work_buf, reg, map->reg_shift); Loading