@@ -181,8 +181,11 @@ static int stm32_fmc2_ebi_check_mux(struct stm32_fmc2_ebi *ebi,
181181 int cs )
182182{
183183 u32 bcr ;
184+ int ret ;
184185
185- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
186+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
187+ if (ret )
188+ return ret ;
186189
187190 if (bcr & FMC2_BCR_MTYP )
188191 return 0 ;
@@ -195,8 +198,11 @@ static int stm32_fmc2_ebi_check_waitcfg(struct stm32_fmc2_ebi *ebi,
195198 int cs )
196199{
197200 u32 bcr , val = FIELD_PREP (FMC2_BCR_MTYP , FMC2_BCR_MTYP_NOR );
201+ int ret ;
198202
199- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
203+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
204+ if (ret )
205+ return ret ;
200206
201207 if ((bcr & FMC2_BCR_MTYP ) == val && bcr & FMC2_BCR_BURSTEN )
202208 return 0 ;
@@ -209,8 +215,11 @@ static int stm32_fmc2_ebi_check_sync_trans(struct stm32_fmc2_ebi *ebi,
209215 int cs )
210216{
211217 u32 bcr ;
218+ int ret ;
212219
213- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
220+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
221+ if (ret )
222+ return ret ;
214223
215224 if (bcr & FMC2_BCR_BURSTEN )
216225 return 0 ;
@@ -223,8 +232,11 @@ static int stm32_fmc2_ebi_check_async_trans(struct stm32_fmc2_ebi *ebi,
223232 int cs )
224233{
225234 u32 bcr ;
235+ int ret ;
226236
227- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
237+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
238+ if (ret )
239+ return ret ;
228240
229241 if (!(bcr & FMC2_BCR_BURSTEN ) || !(bcr & FMC2_BCR_CBURSTRW ))
230242 return 0 ;
@@ -237,8 +249,11 @@ static int stm32_fmc2_ebi_check_cpsize(struct stm32_fmc2_ebi *ebi,
237249 int cs )
238250{
239251 u32 bcr , val = FIELD_PREP (FMC2_BCR_MTYP , FMC2_BCR_MTYP_PSRAM );
252+ int ret ;
240253
241- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
254+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
255+ if (ret )
256+ return ret ;
242257
243258 if ((bcr & FMC2_BCR_MTYP ) == val && bcr & FMC2_BCR_BURSTEN )
244259 return 0 ;
@@ -251,12 +266,18 @@ static int stm32_fmc2_ebi_check_address_hold(struct stm32_fmc2_ebi *ebi,
251266 int cs )
252267{
253268 u32 bcr , bxtr , val = FIELD_PREP (FMC2_BXTR_ACCMOD , FMC2_BXTR_EXTMOD_D );
269+ int ret ;
270+
271+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
272+ if (ret )
273+ return ret ;
254274
255- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
256275 if (prop -> reg_type == FMC2_REG_BWTR )
257- regmap_read (ebi -> regmap , FMC2_BWTR (cs ), & bxtr );
276+ ret = regmap_read (ebi -> regmap , FMC2_BWTR (cs ), & bxtr );
258277 else
259- regmap_read (ebi -> regmap , FMC2_BTR (cs ), & bxtr );
278+ ret = regmap_read (ebi -> regmap , FMC2_BTR (cs ), & bxtr );
279+ if (ret )
280+ return ret ;
260281
261282 if ((!(bcr & FMC2_BCR_BURSTEN ) || !(bcr & FMC2_BCR_CBURSTRW )) &&
262283 ((bxtr & FMC2_BXTR_ACCMOD ) == val || bcr & FMC2_BCR_MUXEN ))
@@ -270,12 +291,19 @@ static int stm32_fmc2_ebi_check_clk_period(struct stm32_fmc2_ebi *ebi,
270291 int cs )
271292{
272293 u32 bcr , bcr1 ;
294+ int ret ;
273295
274- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
275- if (cs )
276- regmap_read (ebi -> regmap , FMC2_BCR1 , & bcr1 );
277- else
296+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
297+ if (ret )
298+ return ret ;
299+
300+ if (cs ) {
301+ ret = regmap_read (ebi -> regmap , FMC2_BCR1 , & bcr1 );
302+ if (ret )
303+ return ret ;
304+ } else {
278305 bcr1 = bcr ;
306+ }
279307
280308 if (bcr & FMC2_BCR_BURSTEN && (!cs || !(bcr1 & FMC2_BCR1_CCLKEN )))
281309 return 0 ;
@@ -307,12 +335,18 @@ static u32 stm32_fmc2_ebi_ns_to_clk_period(struct stm32_fmc2_ebi *ebi,
307335{
308336 u32 nb_clk_cycles = stm32_fmc2_ebi_ns_to_clock_cycles (ebi , cs , setup );
309337 u32 bcr , btr , clk_period ;
338+ int ret ;
339+
340+ ret = regmap_read (ebi -> regmap , FMC2_BCR1 , & bcr );
341+ if (ret )
342+ return ret ;
310343
311- regmap_read (ebi -> regmap , FMC2_BCR1 , & bcr );
312344 if (bcr & FMC2_BCR1_CCLKEN || !cs )
313- regmap_read (ebi -> regmap , FMC2_BTR1 , & btr );
345+ ret = regmap_read (ebi -> regmap , FMC2_BTR1 , & btr );
314346 else
315- regmap_read (ebi -> regmap , FMC2_BTR (cs ), & btr );
347+ ret = regmap_read (ebi -> regmap , FMC2_BTR (cs ), & btr );
348+ if (ret )
349+ return ret ;
316350
317351 clk_period = FIELD_GET (FMC2_BTR_CLKDIV , btr ) + 1 ;
318352
@@ -571,11 +605,16 @@ static int stm32_fmc2_ebi_set_address_setup(struct stm32_fmc2_ebi *ebi,
571605 if (ret )
572606 return ret ;
573607
574- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
608+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
609+ if (ret )
610+ return ret ;
611+
575612 if (prop -> reg_type == FMC2_REG_BWTR )
576- regmap_read (ebi -> regmap , FMC2_BWTR (cs ), & bxtr );
613+ ret = regmap_read (ebi -> regmap , FMC2_BWTR (cs ), & bxtr );
577614 else
578- regmap_read (ebi -> regmap , FMC2_BTR (cs ), & bxtr );
615+ ret = regmap_read (ebi -> regmap , FMC2_BTR (cs ), & bxtr );
616+ if (ret )
617+ return ret ;
579618
580619 if ((bxtr & FMC2_BXTR_ACCMOD ) == val || bcr & FMC2_BCR_MUXEN )
581620 val = clamp_val (setup , 1 , FMC2_BXTR_ADDSET_MAX );
@@ -693,11 +732,14 @@ static int stm32_fmc2_ebi_set_max_low_pulse(struct stm32_fmc2_ebi *ebi,
693732 int cs , u32 setup )
694733{
695734 u32 old_val , new_val , pcscntr ;
735+ int ret ;
696736
697737 if (setup < 1 )
698738 return 0 ;
699739
700- regmap_read (ebi -> regmap , FMC2_PCSCNTR , & pcscntr );
740+ ret = regmap_read (ebi -> regmap , FMC2_PCSCNTR , & pcscntr );
741+ if (ret )
742+ return ret ;
701743
702744 /* Enable counter for the bank */
703745 regmap_update_bits (ebi -> regmap , FMC2_PCSCNTR ,
@@ -944,17 +986,20 @@ static void stm32_fmc2_ebi_disable_bank(struct stm32_fmc2_ebi *ebi, int cs)
944986 regmap_update_bits (ebi -> regmap , FMC2_BCR (cs ), FMC2_BCR_MBKEN , 0 );
945987}
946988
947- static void stm32_fmc2_ebi_save_setup (struct stm32_fmc2_ebi * ebi )
989+ static int stm32_fmc2_ebi_save_setup (struct stm32_fmc2_ebi * ebi )
948990{
949991 unsigned int cs ;
992+ int ret ;
950993
951994 for (cs = 0 ; cs < FMC2_MAX_EBI_CE ; cs ++ ) {
952- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & ebi -> bcr [cs ]);
953- regmap_read (ebi -> regmap , FMC2_BTR (cs ), & ebi -> btr [cs ]);
954- regmap_read (ebi -> regmap , FMC2_BWTR (cs ), & ebi -> bwtr [cs ]);
995+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & ebi -> bcr [cs ]);
996+ ret |= regmap_read (ebi -> regmap , FMC2_BTR (cs ), & ebi -> btr [cs ]);
997+ ret |= regmap_read (ebi -> regmap , FMC2_BWTR (cs ), & ebi -> bwtr [cs ]);
998+ if (ret )
999+ return ret ;
9551000 }
9561001
957- regmap_read (ebi -> regmap , FMC2_PCSCNTR , & ebi -> pcscntr );
1002+ return regmap_read (ebi -> regmap , FMC2_PCSCNTR , & ebi -> pcscntr );
9581003}
9591004
9601005static void stm32_fmc2_ebi_set_setup (struct stm32_fmc2_ebi * ebi )
@@ -983,22 +1028,29 @@ static void stm32_fmc2_ebi_disable_banks(struct stm32_fmc2_ebi *ebi)
9831028}
9841029
9851030/* NWAIT signal can not be connected to EBI controller and NAND controller */
986- static bool stm32_fmc2_ebi_nwait_used_by_ctrls (struct stm32_fmc2_ebi * ebi )
1031+ static int stm32_fmc2_ebi_nwait_used_by_ctrls (struct stm32_fmc2_ebi * ebi )
9871032{
1033+ struct device * dev = ebi -> dev ;
9881034 unsigned int cs ;
9891035 u32 bcr ;
1036+ int ret ;
9901037
9911038 for (cs = 0 ; cs < FMC2_MAX_EBI_CE ; cs ++ ) {
9921039 if (!(ebi -> bank_assigned & BIT (cs )))
9931040 continue ;
9941041
995- regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
1042+ ret = regmap_read (ebi -> regmap , FMC2_BCR (cs ), & bcr );
1043+ if (ret )
1044+ return ret ;
1045+
9961046 if ((bcr & FMC2_BCR_WAITEN || bcr & FMC2_BCR_ASYNCWAIT ) &&
997- ebi -> bank_assigned & BIT (FMC2_NAND ))
998- return true;
1047+ ebi -> bank_assigned & BIT (FMC2_NAND )) {
1048+ dev_err (dev , "NWAIT signal connected to EBI and NAND controllers\n" );
1049+ return - EINVAL ;
1050+ }
9991051 }
10001052
1001- return false ;
1053+ return 0 ;
10021054}
10031055
10041056static void stm32_fmc2_ebi_enable (struct stm32_fmc2_ebi * ebi )
@@ -1085,10 +1137,9 @@ static int stm32_fmc2_ebi_parse_dt(struct stm32_fmc2_ebi *ebi)
10851137 return - ENODEV ;
10861138 }
10871139
1088- if (stm32_fmc2_ebi_nwait_used_by_ctrls (ebi )) {
1089- dev_err (dev , "NWAIT signal connected to EBI and NAND controllers\n" );
1090- return - EINVAL ;
1091- }
1140+ ret = stm32_fmc2_ebi_nwait_used_by_ctrls (ebi );
1141+ if (ret )
1142+ return ret ;
10921143
10931144 stm32_fmc2_ebi_enable (ebi );
10941145
@@ -1133,7 +1184,10 @@ static int stm32_fmc2_ebi_probe(struct platform_device *pdev)
11331184 if (ret )
11341185 goto err_release ;
11351186
1136- stm32_fmc2_ebi_save_setup (ebi );
1187+ ret = stm32_fmc2_ebi_save_setup (ebi );
1188+ if (ret )
1189+ goto err_release ;
1190+
11371191 platform_set_drvdata (pdev , ebi );
11381192
11391193 return 0 ;
0 commit comments