@@ -135,39 +135,37 @@ static int lp8860_unlock_eeprom(struct lp8860_led *led, int lock)
135
135
{
136
136
int ret ;
137
137
138
- mutex_lock (& led -> lock );
138
+ guard ( mutex ) (& led -> lock );
139
139
140
140
if (lock == LP8860_UNLOCK_EEPROM ) {
141
141
ret = regmap_write (led -> regmap ,
142
142
LP8860_EEPROM_UNLOCK ,
143
143
LP8860_EEPROM_CODE_1 );
144
144
if (ret ) {
145
145
dev_err (& led -> client -> dev , "EEPROM Unlock failed\n" );
146
- goto out ;
146
+ return ret ;
147
147
}
148
148
149
149
ret = regmap_write (led -> regmap ,
150
150
LP8860_EEPROM_UNLOCK ,
151
151
LP8860_EEPROM_CODE_2 );
152
152
if (ret ) {
153
153
dev_err (& led -> client -> dev , "EEPROM Unlock failed\n" );
154
- goto out ;
154
+ return ret ;
155
155
}
156
156
ret = regmap_write (led -> regmap ,
157
157
LP8860_EEPROM_UNLOCK ,
158
158
LP8860_EEPROM_CODE_3 );
159
159
if (ret ) {
160
160
dev_err (& led -> client -> dev , "EEPROM Unlock failed\n" );
161
- goto out ;
161
+ return ret ;
162
162
}
163
163
} else {
164
164
ret = regmap_write (led -> regmap ,
165
165
LP8860_EEPROM_UNLOCK ,
166
166
LP8860_LOCK_EEPROM );
167
167
}
168
168
169
- out :
170
- mutex_unlock (& led -> lock );
171
169
return ret ;
172
170
}
173
171
@@ -204,30 +202,29 @@ static int lp8860_brightness_set(struct led_classdev *led_cdev,
204
202
int disp_brightness = brt_val * 255 ;
205
203
int ret ;
206
204
207
- mutex_lock (& led -> lock );
205
+ guard ( mutex ) (& led -> lock );
208
206
209
207
ret = lp8860_fault_check (led );
210
208
if (ret ) {
211
209
dev_err (& led -> client -> dev , "Cannot read/clear faults\n" );
212
- goto out ;
210
+ return ret ;
213
211
}
214
212
215
213
ret = regmap_write (led -> regmap , LP8860_DISP_CL1_BRT_MSB ,
216
214
(disp_brightness & 0xff00 ) >> 8 );
217
215
if (ret ) {
218
216
dev_err (& led -> client -> dev , "Cannot write CL1 MSB\n" );
219
- goto out ;
217
+ return ret ;
220
218
}
221
219
222
220
ret = regmap_write (led -> regmap , LP8860_DISP_CL1_BRT_LSB ,
223
221
disp_brightness & 0xff );
224
222
if (ret ) {
225
223
dev_err (& led -> client -> dev , "Cannot write CL1 LSB\n" );
226
- goto out ;
224
+ return ret ;
227
225
}
228
- out :
229
- mutex_unlock (& led -> lock );
230
- return ret ;
226
+
227
+ return 0 ;
231
228
}
232
229
233
230
static int lp8860_init (struct lp8860_led * led )
@@ -392,7 +389,7 @@ static int lp8860_probe(struct i2c_client *client)
392
389
led -> client = client ;
393
390
led -> led_dev .brightness_set_blocking = lp8860_brightness_set ;
394
391
395
- mutex_init ( & led -> lock );
392
+ devm_mutex_init ( & client -> dev , & led -> lock );
396
393
397
394
i2c_set_clientdata (client , led );
398
395
@@ -443,8 +440,6 @@ static void lp8860_remove(struct i2c_client *client)
443
440
dev_err (& led -> client -> dev ,
444
441
"Failed to disable regulator\n" );
445
442
}
446
-
447
- mutex_destroy (& led -> lock );
448
443
}
449
444
450
445
static const struct i2c_device_id lp8860_id [] = {
0 commit comments