@@ -821,8 +821,11 @@ struct regmap *__regmap_init(struct device *dev,
821821 else
822822 map -> alloc_flags = GFP_KERNEL ;
823823
824+ map -> reg_base = config -> reg_base ;
825+
824826 map -> format .reg_bytes = DIV_ROUND_UP (config -> reg_bits , 8 );
825827 map -> format .pad_bytes = config -> pad_bits / 8 ;
828+ map -> format .reg_downshift = config -> reg_downshift ;
826829 map -> format .val_bytes = DIV_ROUND_UP (config -> val_bits , 8 );
827830 map -> format .buf_size = DIV_ROUND_UP (config -> reg_bits +
828831 config -> val_bits + config -> pad_bits , 8 );
@@ -1735,6 +1738,8 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
17351738 return ret ;
17361739 }
17371740
1741+ reg += map -> reg_base ;
1742+ reg >>= map -> format .reg_downshift ;
17381743 map -> format .format_reg (map -> work_buf , reg , map -> reg_shift );
17391744 regmap_set_work_buf_flag_mask (map , map -> format .reg_bytes ,
17401745 map -> write_flag_mask );
@@ -1905,6 +1910,8 @@ static int _regmap_bus_formatted_write(void *context, unsigned int reg,
19051910 return ret ;
19061911 }
19071912
1913+ reg += map -> reg_base ;
1914+ reg >>= map -> format .reg_downshift ;
19081915 map -> format .format_write (map , reg , val );
19091916
19101917 trace_regmap_hw_write_start (map , reg , 1 );
@@ -2346,6 +2353,8 @@ static int _regmap_raw_multi_reg_write(struct regmap *map,
23462353 unsigned int reg = regs [i ].reg ;
23472354 unsigned int val = regs [i ].def ;
23482355 trace_regmap_hw_write_start (map , reg , 1 );
2356+ reg += map -> reg_base ;
2357+ reg >>= map -> format .reg_downshift ;
23492358 map -> format .format_reg (u8 , reg , map -> reg_shift );
23502359 u8 += reg_bytes + pad_bytes ;
23512360 map -> format .format_val (u8 , val , 0 );
@@ -2673,6 +2682,8 @@ static int _regmap_raw_read(struct regmap *map, unsigned int reg, void *val,
26732682 return ret ;
26742683 }
26752684
2685+ reg += map -> reg_base ;
2686+ reg >>= map -> format .reg_downshift ;
26762687 map -> format .format_reg (map -> work_buf , reg , map -> reg_shift );
26772688 regmap_set_work_buf_flag_mask (map , map -> format .reg_bytes ,
26782689 map -> read_flag_mask );
0 commit comments