@@ -135,39 +135,37 @@ static int lp8860_unlock_eeprom(struct lp8860_led *led, int lock)
135135{
136136 int ret ;
137137
138- mutex_lock (& led -> lock );
138+ guard ( mutex ) (& led -> lock );
139139
140140 if (lock == LP8860_UNLOCK_EEPROM ) {
141141 ret = regmap_write (led -> regmap ,
142142 LP8860_EEPROM_UNLOCK ,
143143 LP8860_EEPROM_CODE_1 );
144144 if (ret ) {
145145 dev_err (& led -> client -> dev , "EEPROM Unlock failed\n" );
146- goto out ;
146+ return ret ;
147147 }
148148
149149 ret = regmap_write (led -> regmap ,
150150 LP8860_EEPROM_UNLOCK ,
151151 LP8860_EEPROM_CODE_2 );
152152 if (ret ) {
153153 dev_err (& led -> client -> dev , "EEPROM Unlock failed\n" );
154- goto out ;
154+ return ret ;
155155 }
156156 ret = regmap_write (led -> regmap ,
157157 LP8860_EEPROM_UNLOCK ,
158158 LP8860_EEPROM_CODE_3 );
159159 if (ret ) {
160160 dev_err (& led -> client -> dev , "EEPROM Unlock failed\n" );
161- goto out ;
161+ return ret ;
162162 }
163163 } else {
164164 ret = regmap_write (led -> regmap ,
165165 LP8860_EEPROM_UNLOCK ,
166166 LP8860_LOCK_EEPROM );
167167 }
168168
169- out :
170- mutex_unlock (& led -> lock );
171169 return ret ;
172170}
173171
@@ -204,30 +202,29 @@ static int lp8860_brightness_set(struct led_classdev *led_cdev,
204202 int disp_brightness = brt_val * 255 ;
205203 int ret ;
206204
207- mutex_lock (& led -> lock );
205+ guard ( mutex ) (& led -> lock );
208206
209207 ret = lp8860_fault_check (led );
210208 if (ret ) {
211209 dev_err (& led -> client -> dev , "Cannot read/clear faults\n" );
212- goto out ;
210+ return ret ;
213211 }
214212
215213 ret = regmap_write (led -> regmap , LP8860_DISP_CL1_BRT_MSB ,
216214 (disp_brightness & 0xff00 ) >> 8 );
217215 if (ret ) {
218216 dev_err (& led -> client -> dev , "Cannot write CL1 MSB\n" );
219- goto out ;
217+ return ret ;
220218 }
221219
222220 ret = regmap_write (led -> regmap , LP8860_DISP_CL1_BRT_LSB ,
223221 disp_brightness & 0xff );
224222 if (ret ) {
225223 dev_err (& led -> client -> dev , "Cannot write CL1 LSB\n" );
226- goto out ;
224+ return ret ;
227225 }
228- out :
229- mutex_unlock (& led -> lock );
230- return ret ;
226+
227+ return 0 ;
231228}
232229
233230static int lp8860_init (struct lp8860_led * led )
@@ -392,7 +389,7 @@ static int lp8860_probe(struct i2c_client *client)
392389 led -> client = client ;
393390 led -> led_dev .brightness_set_blocking = lp8860_brightness_set ;
394391
395- mutex_init ( & led -> lock );
392+ devm_mutex_init ( & client -> dev , & led -> lock );
396393
397394 i2c_set_clientdata (client , led );
398395
@@ -443,8 +440,6 @@ static void lp8860_remove(struct i2c_client *client)
443440 dev_err (& led -> client -> dev ,
444441 "Failed to disable regulator\n" );
445442 }
446-
447- mutex_destroy (& led -> lock );
448443}
449444
450445static const struct i2c_device_id lp8860_id [] = {
0 commit comments