@@ -187,7 +187,7 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
187
187
u8 * buf = dev -> in_out_buffer ;
188
188
int ret ;
189
189
190
- mutex_lock (& dev -> lock );
190
+ guard ( mutex ) (& dev -> lock );
191
191
192
192
ret = hid_hw_raw_request (hdev , CP2112_GPIO_CONFIG , buf ,
193
193
CP2112_GPIO_CONFIG_LENGTH , HID_FEATURE_REPORT ,
@@ -196,7 +196,7 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
196
196
hid_err (hdev , "error requesting GPIO config: %d\n" , ret );
197
197
if (ret >= 0 )
198
198
ret = - EIO ;
199
- goto exit ;
199
+ return ret ;
200
200
}
201
201
202
202
buf [1 ] &= ~BIT (offset );
@@ -209,14 +209,10 @@ static int cp2112_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
209
209
hid_err (hdev , "error setting GPIO config: %d\n" , ret );
210
210
if (ret >= 0 )
211
211
ret = - EIO ;
212
- goto exit ;
212
+ return ret ;
213
213
}
214
214
215
- ret = 0 ;
216
-
217
- exit :
218
- mutex_unlock (& dev -> lock );
219
- return ret ;
215
+ return 0 ;
220
216
}
221
217
222
218
static void cp2112_gpio_set_unlocked (struct cp2112_device * dev ,
@@ -244,7 +240,7 @@ static void cp2112_gpio_set(struct gpio_chip *chip, unsigned int offset,
244
240
245
241
guard (mutex )(& dev -> lock );
246
242
247
- return cp2112_gpio_set_unlocked (dev , offset , value );
243
+ cp2112_gpio_set_unlocked (dev , offset , value );
248
244
}
249
245
250
246
static int cp2112_gpio_get_all (struct gpio_chip * chip )
@@ -254,23 +250,17 @@ static int cp2112_gpio_get_all(struct gpio_chip *chip)
254
250
u8 * buf = dev -> in_out_buffer ;
255
251
int ret ;
256
252
257
- mutex_lock (& dev -> lock );
253
+ guard ( mutex ) (& dev -> lock );
258
254
259
255
ret = hid_hw_raw_request (hdev , CP2112_GPIO_GET , buf ,
260
256
CP2112_GPIO_GET_LENGTH , HID_FEATURE_REPORT ,
261
257
HID_REQ_GET_REPORT );
262
258
if (ret != CP2112_GPIO_GET_LENGTH ) {
263
259
hid_err (hdev , "error requesting GPIO values: %d\n" , ret );
264
- ret = ret < 0 ? ret : - EIO ;
265
- goto exit ;
260
+ return ret < 0 ? ret : - EIO ;
266
261
}
267
262
268
- ret = buf [1 ];
269
-
270
- exit :
271
- mutex_unlock (& dev -> lock );
272
-
273
- return ret ;
263
+ return buf [1 ];
274
264
}
275
265
276
266
static int cp2112_gpio_get (struct gpio_chip * chip , unsigned int offset )
@@ -292,14 +282,14 @@ static int cp2112_gpio_direction_output(struct gpio_chip *chip,
292
282
u8 * buf = dev -> in_out_buffer ;
293
283
int ret ;
294
284
295
- mutex_lock (& dev -> lock );
285
+ guard ( mutex ) (& dev -> lock );
296
286
297
287
ret = hid_hw_raw_request (hdev , CP2112_GPIO_CONFIG , buf ,
298
288
CP2112_GPIO_CONFIG_LENGTH , HID_FEATURE_REPORT ,
299
289
HID_REQ_GET_REPORT );
300
290
if (ret != CP2112_GPIO_CONFIG_LENGTH ) {
301
291
hid_err (hdev , "error requesting GPIO config: %d\n" , ret );
302
- goto fail ;
292
+ return ret < 0 ? ret : - EIO ;
303
293
}
304
294
305
295
buf [1 ] |= 1 << offset ;
@@ -310,7 +300,7 @@ static int cp2112_gpio_direction_output(struct gpio_chip *chip,
310
300
HID_REQ_SET_REPORT );
311
301
if (ret < 0 ) {
312
302
hid_err (hdev , "error setting GPIO config: %d\n" , ret );
313
- goto fail ;
303
+ return ret ;
314
304
}
315
305
316
306
/*
@@ -319,13 +309,7 @@ static int cp2112_gpio_direction_output(struct gpio_chip *chip,
319
309
*/
320
310
cp2112_gpio_set_unlocked (dev , offset , value );
321
311
322
- mutex_unlock (& dev -> lock );
323
-
324
312
return 0 ;
325
-
326
- fail :
327
- mutex_unlock (& dev -> lock );
328
- return ret < 0 ? ret : - EIO ;
329
313
}
330
314
331
315
static int cp2112_hid_get (struct hid_device * hdev , unsigned char report_number ,
0 commit comments