@@ -203,10 +203,10 @@ static u32 mn_to_reg(struct mn *mn, u32 m, u32 n, u32 val)
203203 return val ;
204204}
205205
206- static void configure_bank (struct clk_dyn_rcg * rcg , const struct freq_tbl * f )
206+ static int configure_bank (struct clk_dyn_rcg * rcg , const struct freq_tbl * f )
207207{
208208 u32 ns , md , reg ;
209- int bank , new_bank ;
209+ int bank , new_bank , ret ;
210210 struct mn * mn ;
211211 struct pre_div * p ;
212212 struct src_sel * s ;
@@ -218,38 +218,56 @@ static void configure_bank(struct clk_dyn_rcg *rcg, const struct freq_tbl *f)
218218
219219 enabled = __clk_is_enabled (hw -> clk );
220220
221- regmap_read (rcg -> clkr .regmap , rcg -> bank_reg , & reg );
221+ ret = regmap_read (rcg -> clkr .regmap , rcg -> bank_reg , & reg );
222+ if (ret )
223+ return ret ;
222224 bank = reg_to_bank (rcg , reg );
223225 new_bank = enabled ? !bank : bank ;
224226
225227 ns_reg = rcg -> ns_reg [new_bank ];
226- regmap_read (rcg -> clkr .regmap , ns_reg , & ns );
228+ ret = regmap_read (rcg -> clkr .regmap , ns_reg , & ns );
229+ if (ret )
230+ return ret ;
227231
228232 if (banked_mn ) {
229233 mn = & rcg -> mn [new_bank ];
230234 md_reg = rcg -> md_reg [new_bank ];
231235
232236 ns |= BIT (mn -> mnctr_reset_bit );
233- regmap_write (rcg -> clkr .regmap , ns_reg , ns );
237+ ret = regmap_write (rcg -> clkr .regmap , ns_reg , ns );
238+ if (ret )
239+ return ret ;
234240
235- regmap_read (rcg -> clkr .regmap , md_reg , & md );
241+ ret = regmap_read (rcg -> clkr .regmap , md_reg , & md );
242+ if (ret )
243+ return ret ;
236244 md = mn_to_md (mn , f -> m , f -> n , md );
237- regmap_write (rcg -> clkr .regmap , md_reg , md );
238-
245+ ret = regmap_write (rcg -> clkr .regmap , md_reg , md );
246+ if (ret )
247+ return ret ;
239248 ns = mn_to_ns (mn , f -> m , f -> n , ns );
240- regmap_write (rcg -> clkr .regmap , ns_reg , ns );
249+ ret = regmap_write (rcg -> clkr .regmap , ns_reg , ns );
250+ if (ret )
251+ return ret ;
241252
242253 /* Two NS registers means mode control is in NS register */
243254 if (rcg -> ns_reg [0 ] != rcg -> ns_reg [1 ]) {
244255 ns = mn_to_reg (mn , f -> m , f -> n , ns );
245- regmap_write (rcg -> clkr .regmap , ns_reg , ns );
256+ ret = regmap_write (rcg -> clkr .regmap , ns_reg , ns );
257+ if (ret )
258+ return ret ;
246259 } else {
247260 reg = mn_to_reg (mn , f -> m , f -> n , reg );
248- regmap_write (rcg -> clkr .regmap , rcg -> bank_reg , reg );
261+ ret = regmap_write (rcg -> clkr .regmap , rcg -> bank_reg ,
262+ reg );
263+ if (ret )
264+ return ret ;
249265 }
250266
251267 ns &= ~BIT (mn -> mnctr_reset_bit );
252- regmap_write (rcg -> clkr .regmap , ns_reg , ns );
268+ ret = regmap_write (rcg -> clkr .regmap , ns_reg , ns );
269+ if (ret )
270+ return ret ;
253271 }
254272
255273 if (banked_p ) {
@@ -259,13 +277,20 @@ static void configure_bank(struct clk_dyn_rcg *rcg, const struct freq_tbl *f)
259277
260278 s = & rcg -> s [new_bank ];
261279 ns = src_to_ns (s , s -> parent_map [f -> src ], ns );
262- regmap_write (rcg -> clkr .regmap , ns_reg , ns );
280+ ret = regmap_write (rcg -> clkr .regmap , ns_reg , ns );
281+ if (ret )
282+ return ret ;
263283
264284 if (enabled ) {
265- regmap_read (rcg -> clkr .regmap , rcg -> bank_reg , & reg );
285+ ret = regmap_read (rcg -> clkr .regmap , rcg -> bank_reg , & reg );
286+ if (ret )
287+ return ret ;
266288 reg ^= BIT (rcg -> mux_sel_bit );
267- regmap_write (rcg -> clkr .regmap , rcg -> bank_reg , reg );
289+ ret = regmap_write (rcg -> clkr .regmap , rcg -> bank_reg , reg );
290+ if (ret )
291+ return ret ;
268292 }
293+ return 0 ;
269294}
270295
271296static int clk_dyn_rcg_set_parent (struct clk_hw * hw , u8 index )
@@ -292,9 +317,7 @@ static int clk_dyn_rcg_set_parent(struct clk_hw *hw, u8 index)
292317 f .pre_div = ns_to_pre_div (& rcg -> p [bank ], ns ) + 1 ;
293318
294319 f .src = index ;
295- configure_bank (rcg , & f );
296-
297- return 0 ;
320+ return configure_bank (rcg , & f );
298321}
299322
300323/*
@@ -567,9 +590,7 @@ static int __clk_dyn_rcg_set_rate(struct clk_hw *hw, unsigned long rate)
567590 if (!f )
568591 return - EINVAL ;
569592
570- configure_bank (rcg , f );
571-
572- return 0 ;
593+ return configure_bank (rcg , f );
573594}
574595
575596static int clk_dyn_rcg_set_rate (struct clk_hw * hw , unsigned long rate ,
0 commit comments